package ru.iteco.java.lections;

public class CastingExample {

	//целочисленные
	int intVar=2147483647;
	short shortVar=32767;
	char charVar='a';
	byte byteVar=127;
	long longVar=0x1fffffffffffffffl;
	//дробные
	float floatVar=1.4e+5f;
	double doubleVar=1.79769313486231570e+308d;
	//логические
	boolean boolVar=true;
	
	/**
	 * Метод main - точка входа
	 * @param args
	 */
	public static void main(String[] args) {

		CastingExample ce = new CastingExample();
		System.out.println(ce);
		/*
		 * --------------------------------------
		 * далее вызываются методы в
		 * которых производятся преобразования
		 * типов и вывод в консоль результатов
		 */
		ce.castToShort();
		ce.castToByte();
		ce.castToChar();
		ce.castToDouble();
		//----------------------------------------
		
		System.out.println();
		/*
		 * Операции с примитивами
		 * Следующий пример показывает,
		 * что приведение типов может происходить
		 * с потерей данных.
		 */
		System.out.println((long)(0x2fffffffffffffffl-1f));
		System.out.println(0x2fffffffffffffffl-1);
		
		/*
		 * Оболочки не преобразуются друг к другу с помощью ()
		 * так как оболочки не наследуются друг от друга
		 * преобразование производится вызовом методов,
		 * совершающих преобразования
		 */
		CastingObjectExample coe = new CastingObjectExample();
		coe.castToShort();
	}
	
	public void castToShort(){
		System.out.println(
				"\nCast to short :\nintVar=" + (short)intVar + ", \nshortVar=" + (short)shortVar
				+ ", \ncharVar=" + (short)charVar + ", \nbyteVar=" + (short)byteVar
				+ ", \nlongVar=" + (short)longVar + ", \nfloatVar=" + (short)floatVar
				+ ", \ndoubleVar=" + (short)doubleVar + ", \nboolVar - преобразование запрещено"
				);
	}
	
	public void castToByte(){
		System.out.println(
				"\nCast to byte :\nintVar=" + (byte)intVar + ", \nshortVar=" + (byte)shortVar
				+ ", \ncharVar=" + (byte)charVar + ", \nbyteVar=" + (byte)byteVar
				+ ", \nlongVar=" + (byte)longVar + ", \nfloatVar=" + (byte)floatVar
				+ ", \ndoubleVar=" + (byte)doubleVar + ", \nboolVar - преобразование запрещено"
				);
	}
	
	public void castToChar(){
		System.out.println(
				"\nCast to char :\nintVar=" + (char)intVar + ", \nshortVar=" + (char)shortVar
				+ ", \ncharVar=" + (char)charVar + ", \nbyteVar=" + (char)byteVar
				+ ", \nlongVar=" + (char)longVar + ", \nfloatVar=" + (char)floatVar
				+ ", \ndoubleVar=" + (char)doubleVar + ", \nboolVar - преобразование запрещено"
				);
	}
	
	public void castToDouble(){
		System.out.println(
				"\nCast to double :\nintVar=" + (double)intVar + ", \nshortVar=" + (double)shortVar
				+ ", \ncharVar=" + (double)charVar + ", \nbyteVar=" + (double)byteVar
				+ ", \nlongVar=" + (double)longVar + ", \nfloatVar=" + (double)floatVar
				+ ", \ndoubleVar=" + (double)doubleVar + ", \nboolVar - преобразование запрещено"
				);
	}

	@Override
	public String toString() {
		return "CastingExample :\nintVar=" + intVar + ", \nshortVar=" + shortVar
				+ ", \ncharVar=" + charVar + ", \nbyteVar=" + byteVar
				+ ", \nlongVar=" + longVar + ", \nfloatVar=" + floatVar
				+ ", \ndoubleVar=" + doubleVar + ", \nboolVar=" + boolVar;
	}
	


}
